WebGL API
《WebGL文档》说到WebGL API,那就需要知道什么是WebGL API,WebGL API的作用是什么? 初始化着色器函数中的createShader、shaderSource等方法就是WebGl API,说明脚本语言Javascript可以通过WebGl API来编译着色器代码,并在GPU中执行,初始化GPU状态; 比如第37行代码drawArrays()方法就是WebGL API,说明脚本语言Javascript可以通过WebGl API控制GPU的执行。总的来看WebGL API就是CPU和GPU之间的桥梁,或者说Javascript语言 和着色器语言之间的桥梁。Javascript语言可以控制WebGL的API,也可以把WebGL API成为Javascript API。
格式
WebGL API在使用的时候,前面会添加gl.,查看第16行代码可以知道,gl是canvas画布对象执行getContext()方法后返回的一个对象,其实也可以写任意名字, 也就是说WebGL API是寄生在canvas画布对象上,也可以说WebGl API都是canvas画布的方法或属性。Javascript脚本语言执行方法或属性时的语法是符号点,gl是对象, drawArrays是对象gl的方法。
硬件
WebGL API多数与GPU硬件相关,控制相关图形处理单元,比如说drawArrays不执行,GPU渲染管线的顶点、片元着色器是不会把顶点坐标转化为显示器上的像素显示出来。如果你有 数字电路的知识,可编程芯片不仅仅只有GPU,针对不同的应用情形,都有特定的可编程芯片,图形处理用到的是可编程GPU,也就是说可以运行程序。处理声音是声卡,处理图像是显卡,自然而然它们 都会以CPU为核心,接受CPU的调度。以上描述在有些地方可能不太严谨,大家也不必记忆,主要目的是让大家有基本的认识,可以更好的编写程序。GPU相比CPU最大的特点是并行计算,不过WebGL API都 进行了封装,如果你想学习并行计算可以关注CUDA或OpenCL。GPU硬件(渲染管线)、显卡驱动、操作系统、浏览器、WebGL API是逐层抽象的。每一层都会为上一层提供一个接口,这里可以看出WebGL API是 首先通过浏览器的的解析,才能够经过一系列层驱动GPU工作,生成像素缓存,显示器会按照一定的频率扫描像素缓存,最终显示出来。
版本
- WebGL 1.0
- WebGL 2.0
WebGL1.0基本所有浏览器都能够支持,WebGL 2.0标准目前多数浏览器还都没有正式支持。